import urllib.request
import urllib.parse
import os
import time

# 目标PDF文件名变体列表（尝试不同的可能名称）
target_pdf_variants = [
    "人工智能对就业市场的影响数据集.pdf",
    "人工智能对就业市场影响数据集.pdf",
    "人工智能对就业的影响数据集.pdf",
    "AI对就业市场的影响数据集.pdf",
    "人工智能就业市场影响数据集.pdf"
]
save_dir = "d:\D"

# 从之前的分析中获取的信息
date_patterns = ["20250808", "202508", "20250807", "20250809"]
uuid_patterns = [
    "5df60712-8a75-4581-814e-16a203dd27bb",
    "50b9bf1c-287f-4a58-baa9-071f2db350a6",
    "84519de1-8bb4-4bd1-b3fa-e610b20d4408",
    "a1b2c3d4-e5f6-4a58-baa9-071f2db350a6",  # 额外生成的UUID
    "1234abcd-5678-90ef-ab12-34567890abcd"   # 额外生成的UUID
]

# 尝试不同的URL格式
base_url_templates = [
    "https://moor-smile.shec.edu.cn/rest/pdf/{date}/{uuid}/{pdf_name}",
    "https://moor-smile.shec.edu.cn/pdf/{date}/{uuid}/{pdf_name}",
    "https://moor-smile.shec.edu.cn/files/pdf/{date}/{uuid}/{pdf_name}"
]

def try_download_with_variants():
    print("尝试多种变体来下载'人工智能对就业市场的影响数据集.pdf'")
    print(f"保存目录: {save_dir}")
    print(f"尝试的日期模式: {date_patterns}")
    print(f"尝试的UUID模式: {uuid_patterns}")
    print(f"尝试的文件名变体: {target_pdf_variants}")
    print(f"尝试的URL模板数量: {len(base_url_templates)}")
    
    total_attempts = 0
    success_count = 0
    
    # 遍历所有可能的组合
    for pdf_name in target_pdf_variants:
        encoded_pdf_name = urllib.parse.quote(pdf_name)
        save_path = os.path.join(save_dir, pdf_name)
        
        for url_template in base_url_templates:
            for date in date_patterns:
                for uuid in uuid_patterns:
                    total_attempts += 1
                    
                    # 构建完整URL
                    pdf_url = url_template.format(date=date, uuid=uuid, pdf_name=encoded_pdf_name)
                    
                    # 为了避免输出过多，只显示部分尝试
                    if total_attempts % 5 == 0:
                        print(f"\n尝试 {total_attempts}: {pdf_url}")
                        
                    try:
                        # 创建请求对象，添加用户代理
                        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
                        req = urllib.request.Request(pdf_url, headers=headers)
                        
                        # 尝试连接并下载
                        with urllib.request.urlopen(req, timeout=5) as response:
                            # 检查响应状态
                            if response.status == 200:
                                print(f"\n找到文件！状态码: {response.status}")
                                print(f"URL: {pdf_url}")
                                print(f"文件名变体: {pdf_name}")
                                
                                # 读取并保存文件
                                with open(save_path, 'wb') as out_file:
                                    out_file.write(response.read())
                                
                                # 验证文件下载成功
                                if os.path.exists(save_path):
                                    file_size = os.path.getsize(save_path) / 1024 / 1024  # 转换为MB
                                    print(f"PDF文件下载成功！")
                                    print(f"保存路径: {save_path}")
                                    print(f"文件大小: {file_size:.2f} MB")
                                    success_count += 1
                                    # 找到一个就可以了，不需要继续尝试
                                    return True
                                else:
                                    print("文件保存失败。")
                    except urllib.error.HTTPError as e:
                        # 不输出404错误，避免日志过多
                        pass
                    except urllib.error.URLError as e:
                        # 网络错误，可能是连接问题
                        pass
                    except Exception as e:
                        # 其他错误
                        pass
                    
                    # 避免请求过于频繁
                    time.sleep(0.5)
    
    # 如果所有尝试都失败
    print(f"\n所有 {total_attempts} 个URL尝试都失败了。")
    print("可能的原因:")
    print("1. 文件可能不存在或名称与您提供的不同")
    print("2. 服务器可能需要特定的访问权限")
    print("3. URL格式可能与我们尝试的不同")
    print("\n建议:")
    print("1. 确认此PDF文件的准确名称")
    print("2. 找到包含此PDF链接的HTML文件，并将其放在D:\D目录中")
    print("3. 或者获取正确的PDF文件URL")
    return False

if __name__ == "__main__":
    print("开始尝试下载'人工智能对就业市场的影响数据集.pdf'文件...")
    start_time = time.time()
    success = try_download_with_variants()
    end_time = time.time()
    
    print(f"\n下载尝试完成，耗时: {end_time - start_time:.2f} 秒")
    
    if success:
        print("任务成功完成！")
    else:
        print("任务未完成。请按照上述建议操作后重新尝试。")